css: Parse enums with new case-insensitive helper
authorAlexander Larsson <alexl@redhat.com>
Fri, 25 Nov 2011 13:30:47 +0000 (14:30 +0100)
committerAlexander Larsson <alexl@redhat.com>
Fri, 25 Nov 2011 14:36:08 +0000 (15:36 +0100)
gtk/gtkstyleproperty.c

index f511c717a4e07c03bd86730c15f89f46c672c1c5..b904dc7cb0f802f9a704c8acf44fe0fd8ce5ce73 100644 (file)
@@ -1360,9 +1360,14 @@ enum_value_parse (GtkCssParser *parser,
                   GFile        *base,
                   GValue       *value)
 {
-  GEnumClass *enum_class;
-  GEnumValue *enum_value;
   char *str;
+  int v;
+
+  if (_gtk_css_parser_try_enum (parser, G_VALUE_TYPE (value), &v))
+    {
+      g_value_set_enum (value, v);
+      return TRUE;
+    }
 
   str = _gtk_css_parser_try_ident (parser, TRUE);
   if (str == NULL)
@@ -1370,21 +1375,13 @@ enum_value_parse (GtkCssParser *parser,
       _gtk_css_parser_error (parser, "Expected an identifier");
       return FALSE;
     }
-
-  enum_class = g_type_class_ref (G_VALUE_TYPE (value));
-  enum_value = g_enum_get_value_by_nick (enum_class, str);
-
-  if (enum_value)
-    g_value_set_enum (value, enum_value->value);
-  else
-    _gtk_css_parser_error (parser,
-                           "Unknown value '%s' for enum type '%s'",
-                           str, g_type_name (G_VALUE_TYPE (value)));
   
-  g_type_class_unref (enum_class);
+  _gtk_css_parser_error (parser,
+                        "Unknown value '%s' for enum type '%s'",
+                        str, g_type_name (G_VALUE_TYPE (value)));
   g_free (str);
 
-  return enum_value != NULL;
+  return FALSE;
 }
 
 static void